import { Http as http } from '#/api/http';

/**
 * 验证码相关API类型定义
 */
export interface CaptchaVO {
  /**
   * 验证码图片（Base64编码）
   */
  captchaImg: string;

  /**
   * 验证码标识
   */
  identification: string;
}

/**
 * 验证码验证参数
 */
export interface CaptchaVerifyParams {
  /**
   * 验证码标识
   */
  identification: string;

  /**
   * 验证码内容
   */
  captchaContent: string;
}

/**
 * 生成数字验证码
 * @param params 可选参数
 * @param params.captchaHeight 验证码图片高度
 * @param params.captchaWidth 验证码图片宽度
 * @param params.expireTime 验证码过期时间
 * @param params.verifyLength 验证码长度
 */
export async function getNumberCaptchaApi(params?: {
  captchaHeight?: number;
  captchaWidth?: number;
  expireTime?: number;
  verifyLength?: number;
}) {
  return http.get<CaptchaVO>('/common/captcha/number', params);
}

/**
 * 生成混合验证码（数字和字母）
 * @param params 可选参数
 * @param params.captchaHeight 验证码图片高度
 * @param params.captchaWidth 验证码图片宽度
 * @param params.expireTime 验证码过期时间
 * @param params.verifyLength 验证码长度
 */
export async function getMixCaptchaApi(params?: {
  captchaHeight?: number;
  captchaWidth?: number;
  expireTime?: number;
  verifyLength?: number;
}) {
  return http.get<CaptchaVO>('/common/captcha/mix', params);
}

/**
 * 生成数学计算验证码
 * @param params 可选参数
 * @param params.captchaHeight 验证码图片高度
 * @param params.captchaWidth 验证码图片宽度
 * @param params.expireTime 验证码过期时间
 * @param params.verifyLength 验证码长度
 */
export async function getMathCaptchaApi(params?: {
  captchaHeight?: number;
  captchaWidth?: number;
  expireTime?: number;
  verifyLength?: number;
}) {
  return http.get<CaptchaVO>('/common/captcha/math', params);
}

/**
 * 验证验证码
 * @param data 验证参数
 */
export async function verifyCaptchaApi(data: CaptchaVerifyParams) {
  return http.post<string>('/common/captcha/verify', data);
}
